home *** CD-ROM | disk | FTP | other *** search
/ Löwenzahn 1 / Loewe1.iso / mac / Quicktime 6 für OS X / QuickTimeInstallerX.dmg / QuickTime652.pkg / Contents / Resources / postflight < prev    next >
Text File  |  2004-09-07  |  5KB  |  188 lines

  1. #!/usr/bin/perl
  2.  
  3. my $SYSVERS = "$ARGV[3]"."/System/Library/CoreServices/SystemVersion.plist";
  4. my $runnerPID = getppid();
  5. my $installerPID = "";
  6. my $uid = "";
  7. my $uname = "";
  8.  
  9. open( PSOUT, "/bin/ps -axww -o pid,ppid -p $runnerPID |" );
  10. while( <PSOUT> ) {
  11.     my @fields = split '\s+', $_;
  12.     if ("$fields[1]" eq "$runnerPID") {
  13.         $installerPID = $fields[2];
  14.     }
  15. }
  16. close( PSOUT );
  17.  
  18. if ("$installerPID" ne "") {
  19.     open( PSOUT, "/bin/ps -axww -o pid,ruid -p $installerPID |" );
  20.     while( <PSOUT> ) {
  21.         my @fields = split '\s+', $_;
  22.         if ("$fields[1]" eq "$installerPID") {
  23.             $uid = $fields[2];
  24.         }
  25.     }
  26.     close( PSOUT );
  27. }
  28.  
  29. if ("$uid" ne "") {
  30.     open( PSOUTA, "/usr/bin/id -p $uid |" );
  31.     while( <PSOUTA> ) {
  32.         my @fields = split '\s+', $_;
  33.         if ("$fields[0]" eq "uid") {
  34.             $uname = $fields[1];
  35.         }
  36.     }
  37.     close( PSOUTA );
  38. }
  39.  
  40. ###################################################################
  41.  
  42. # Remove old unneeded quicktime pieces
  43. my $CLEANUP_SCRIPT = "$ARGV[0]" . "/Contents/Resources/cleancruft";
  44. $cmd = "\"$CLEANUP_SCRIPT\" \"$ARGV[0]\" \"$ARGV[1]\" \"$ARGV[2]\" \"$ARGV[3]\"";
  45. system( "$cmd" );
  46.  
  47. ########    
  48. # Stuff the installation info into the preferences for QT Updates
  49. my $INSTALL_INFO= "$ARGV[0]" . "/Contents/Resources/installinfo";
  50. my $cmd = "\"$INSTALL_INFO\" -postinstall -volume \"$ARGV[2]\" -type full";
  51. #print STDOUT "INSTALL_INFO: $cmd\n";
  52. system( "$cmd" );
  53.  
  54. ########
  55.  
  56. # Configure the browser mime types based on the installed QuickTime
  57. my $CONFIGURE_MIME_TYPES= "$ARGV[0]" . "/Contents/Resources/ConfigureMimeTypes";
  58. my $cmd = "\"$CONFIGURE_MIME_TYPES\" -rescan -verbose";
  59. if ("$uname" ne "") {
  60.     $cmd = "sudo -u $uname \"$CONFIGURE_MIME_TYPES\" -rescan -verbose";
  61. }
  62. #print STDOUT "CONFIGURE_MIME_TYPES: $cmd\n";
  63. system( "$cmd" );
  64.  
  65. ########
  66.  
  67. #print STDOUT "BEFORE CheckVersion: $SYSVERS\n";
  68. if(CheckVersion( "$SYSVERS", "10.3", "ProductVersion", "<" )) {
  69.     # Install quicktime's version of AvailabilityMacros.h if it's there
  70.     my $INSTALL_QTFILES = "$ARGV[0]" . "/Contents/Resources/installqtfiles";
  71.     $cmd = "\"$INSTALL_QTFILES\" \"$ARGV[0]\" \"$ARGV[1]\" \"$ARGV[2]\" \"$ARGV[3]\"";
  72.     system( "$cmd" );
  73.  
  74.     # Rebase and prebind the binaries for Jaguar
  75.     my $REBASE_SCRIPT = "$ARGV[0]" . "/Contents/Resources/rebasebinaries";
  76.     $cmd = "\"$REBASE_SCRIPT\" \"$ARGV[0]\" \"$ARGV[1]\" \"$ARGV[2]\" \"$ARGV[3]\"";
  77.     system( "$cmd" );
  78.  
  79.     # Wrap the plugin in a fat container
  80.     my $WRAPPLUGIN_SCRIPT = "$ARGV[0]" . "/Contents/Resources/wrapplugin";
  81.     $cmd = "\"$WRAPPLUGIN_SCRIPT\" \"$ARGV[0]\" \"$ARGV[1]\" \"$ARGV[2]\" \"$ARGV[3]\"";
  82.     system( "$cmd" );
  83. }
  84.  
  85. ###########
  86.  
  87. ###########
  88.  
  89. my $permissions_info_file = "/tmp/com.apple.installation.savedperm";
  90. my @stat_info;
  91. my $MODE = 2;
  92. my $UID = 4;
  93. my $GID = 5;
  94.  
  95. if(-e $permissions_info_file) {
  96.     if(open(PERMS_FILE_HDL, "$permissions_info_file")) {
  97.         while(<PERMS_FILE_HDL>) {
  98.             my $item = $_;
  99.             chomp($item);
  100.             push(@stat_info, $item);
  101.         }
  102.         close(PERMS_FILE_HDL);
  103.         unlink($permissions_info_file);
  104.  
  105.         chown($stat_info[$UID], $stat_info[$GID], $TARGET_VOLUME);
  106.         chmod($stat_info[$MODE] & 07777, $TARGET_VOLUME);
  107.     }
  108. }
  109.  
  110. # NOTE:  Use this to see print when debugging
  111. #$cmd = "mkdir -p /tmp/done";
  112. #system( "$cmd" );
  113.  
  114. # Done
  115. exit(0);
  116.  
  117. ##################
  118.  
  119. sub CheckVersion
  120. {
  121.     my $path            = $_[0];
  122.     my $version         = $_[1];
  123.     my $keyName         = $_[2];
  124.     my $operator        = $_[3];
  125.  
  126.     if (! -e $path) {
  127.         return 0;
  128.     }
  129.  
  130.     if (!$operator) {
  131.         $operator = "==";
  132.     }
  133.  
  134.     my $oldSeperator = $/;
  135.     $/ = \0;
  136.  
  137.     open( PLIST, "$path") || do {
  138.         return 0;
  139.     };
  140.  
  141.     $plistData = <PLIST>;
  142.     $plistData =~ /<dict>(.*?)<\/dict>/gis;
  143.  
  144.     @items = split(/<key>/, $plistData);
  145.  
  146.     shift @items;
  147.     foreach $item (@items) {
  148.         $item =~ /(.*?)<\/key>.*?<string>(.*?)<\/string>/gis;
  149.         $versiondata{ $1 } = $2;
  150.     }
  151.  
  152.     close(PLIST);
  153.  
  154.     $/ = $oldSeperator;
  155.  
  156.     @theVersionArray = split(/\./, $versiondata{$keyName});
  157.     for ($i = 0; $i < 3; $i++) {
  158.         if(!$theVersionArray[$i]) {
  159.             $theVersionArray[$i] = '0';
  160.         }
  161.     }
  162.  
  163.     @versionArray = split(/\./, $version);
  164.     
  165.     my $actualVersion;
  166.  
  167.     for ($i = 0; $i < 3; $i++) {
  168.         if (($theVersionArray[$i] != $versionArray[$i]) or ($i == 2)) {
  169.  
  170.             $actualVersion = $theVersionArray[$i];
  171.             $version = $versionArray[$i];
  172.  
  173.             last;
  174.         }
  175.     }
  176.  
  177.     my $expression = '$actualVersion ' . $operator . ' $version';
  178.     if( eval ($expression) )
  179.     {
  180.         return 1;
  181.     }
  182.     else
  183.     {
  184.         return 0;
  185.     }
  186.  
  187. }
  188.